Repository navigation
Conversation
Add runbook-steps.ts: a pure compiler that turns pack requirements, action_items (or the linked SOP) into 1-of-N steps anchored to the video timeline using only pack evidence - extractor-reported ranges, grounded-spec citations, transcript segments quoting named tool evidence or sharing distinctive vocabulary, chapters, and visual events. Steps without evidence keep timestamp_range null. Includes Step 0 prerequisites from stack.tools / stack checks, verification from grounded acceptance criteria or tool checks, RUNBOOK.md rendering, and time/hash lookups. Requirements and action_items gain optional start_s/end_s (no schema version bump). Fixture is the live pBsT6v-ciO8 pack slice. Co-authored-by: KK <kk-agent@users.noreply.github.com>
Ask Gemini for optional start_s/end_s on requirements and action_items (omit when not observed, never guess) and keep only finite, ordered, non-negative ranges in the parser. Pass bounded code_snippets through verifyIdentityPack so the browser pack can show code steps. No stored-pack schema version bump: existing packs keep working and derive anchors client-side. Co-authored-by: KK <kk-agent@users.noreply.github.com>
seekTo(seconds, { autoplay: false }) seeks and explicitly pauses so the
Step Runner can honor an 'Autoplay step clip' toggle. Default behavior
(seek + play) is unchanged; covered by a jsdom hook test with a stubbed
IFrame API.
Co-authored-by: KK <kk-agent@users.noreply.github.com>
Accept a bounded, zod-validated step context on POST /api/chat. When present (and only with a pack binding), the system prompt becomes identity + the active step + the transcript/visual evidence inside a 15s-padded window around the step's anchored range; whole-pack SOP and action lists stay out so one step's troubleshooting does not drag the full pack back into context. Steps without a verified timestamp fall back to the whole transcript and say so. Malformed step contexts fail closed (400) before any model call. Co-authored-by: KK <kk-agent@users.noreply.github.com>
StepRunner: 'Step n of N' stepper with Previous/Next/quick-jump, Step 0 prerequisites checklist, per-step card (action type, anchored time range with provenance, keyframe, quote, command/snippet with copy, inputs/ outputs, verification + local completion mark, troubleshoot hook). Selecting a step scrolls to top, writes #step-n, seeks the player to the anchored start (cue-only when 'Autoplay step clip' is off, pauses at the clip end when on), and reports the active step for chat re-grounding. Unanchored steps disable seek and say why. StudioRunbookPane switches between the runner and a copy/download RUNBOOK.md reference view. Co-authored-by: KK <kk-agent@users.noreply.github.com>
Wire the Step Runner into OneLoopStudio: compile the runbook from the selected pack (+ linked SOP), hand the runner a player slice only when the loaded video is the pack video, persist checked prerequisites and completed steps on the Video row, and re-ground the chat composer to the active step (chip + 'step' body field, clearable; Troubleshoot focuses the composer). StudioIdeOutput gains a first 'Runbook' tab that opens by default when a runbook exists; the seven extraction tabs are unchanged. Export ships the rendered RUNBOOK.md. A pack switch drops a stale #step-N hash while /studio#step-N deep links still restore the step. Co-authored-by: KK <kk-agent@users.noreply.github.com>
…seek Keep 'Step n of N' on one line at the default 340px Deliverables width (select on its own row, autoplay + progress on one row) and distinguish 'player still loading/failed' from 'player shows a different video' when seeking is disabled. Co-authored-by: KK <kk-agent@users.noreply.github.com>
Co-authored-by: KK <kk-agent@users.noreply.github.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
🔍 PR Validation |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Please add a See governance: #898 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7ffcb382c9
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
groupthinking
left a comment
There was a problem hiding this comment.
Review at head 7ffcb382: nine inline findings remain unresolved. Most critically, the chat route accepts client-supplied step content as pack-grounded system context without resolving it against the hosted pack. The Step Runner also retains prior-step history, fails to re-arm clip stopping on replay, and has fixture, verification, range, ID-length, and deep-link defects documented inline. Please fix each current finding with focused regression coverage and rerun the full required checks. GitHub also reports this head as not mergeable.
✅ E2E Test Results: ALL TESTS PASSED
Test Output |
✅ E2E Test Results: ALL TESTS PASSED
Test Output |
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.OpenSSF Scorecard
Scanned Files
|
✅ E2E Test Results: ALL TESTS PASSED
Test Output |
groupthinking
left a comment
There was a problem hiding this comment.
The ten reported review threads are resolved at this head. I checked the saved-pack step resolution, step-scoped chat history, clip replay, bounded IDs, optional ranges, initial step hash, canonical fixture, grounded verification, and linked-SOP fallback against the current code and regression tests. The full web suite, lint, type check, build, Vercel, and issue-link check pass. I approve this code change. The required dependency-review evidence workflow still fails; the live gateway and YouTube walkthrough were not repeated on this head, and integration with #2436 still needs checking before merge. This is not a merge or production-readiness recommendation.
✅ E2E Test Results: ALL TESTS PASSED
Test Output |
✅ E2E Test Results: ALL TESTS PASSED
Test Output |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
✅ E2E Test Results: ALL TESTS PASSED
Test Output |
✅ E2E Test Results: ALL TESTS PASSED
Test Output |
groupthinking
left a comment
There was a problem hiding this comment.
Reviewed exact head ffe211c3a917005be992f775c73dd1edba5f9baa against current main 61522e9170a91bf8c8c6bf02f2e5dbdf2eb5bbd6. My earlier requested changes are resolved: server chat reconstructs and validates the saved-pack step before calling the model; history and pending responses are isolated across step/pack navigation; clip stopping re-arms on replay; bounded IDs, optional malformed ranges, initial deep links, grounded verification, canonical fixtures and shared linked-SOP compilation have regression coverage.
I reviewed the complete 30-path diff and both integration conflicts. Runbook and Tasks coexist, late content preserves an explicitly selected tab, and current main's proposal/event surfaces and existing feature flag remain. Four new integration cases fail against incomplete parent implementations and pass on the combined component. The clean local suite passes 1,610 tests with 28 skipped; types, lint and the 47-page build pass.
On this exact commit, hosted CI passes 1,637 web tests with one skip, types/lint, the 47-page application and Docker builds, and 21 real Studio preflight checks. Preview pipeline tests pass 16/16. Dependency review passes; its complete downloaded artifact's ZIP/raw-diff digests, base/head/run identity and all 18 typed development-dependency rows match the live comparison. There are zero vulnerability entries in that change comparison, no pagination or snapshot-warning headers, 28 successful checks and three skipped, and no unresolved inline threads.
Approving these scoped code changes resolves my earlier review findings. The full npm audit still reports 25 high and 22 moderate findings, with the same advisory IDs as current main; this review grants no audit exception. Root Python resolution fell back to declared packages, leaving transitive coverage incomplete. Preview tests may use cached packs, and a fresh interactive YouTube/gateway walkthrough was not performed on this head. Unanchored steps do not invent timestamps or seek. The PR remains open with auto-merge disabled; this is not a production-readiness claim or merge authorization.
Closes #2489. Related to #2331.
Studio Deliverables gains a synchronized Step Runner and downloadable
RUNBOOK.md, using saved Video Pack evidence to seek the video and ground chat to the active step. This candidate integrates current main without dropping its newer Tasks tab, event empty states, proposal inspection or feature-gated selected-run controls.Current source and integration
Head
ffe211c3a917005be992f775c73dd1edba5f9baais a history-preserving merge of Step Runner head14b14d5dd24db12293a17f5c1fec9659b46738d1and main61522e9170a91bf8c8c6bf02f2e5dbdf2eb5bbd6. The two component conflicts are resolved inOneLoopStudio.tsxandStudioIdeOutput.tsx: both Runbook and Tasks remain accessible; Runbook opens when available, Tasks opens otherwise, and a late runbook does not override an explicitly selected tab. Four new regressions exercise coexistence, default behavior and delayed content. Against the incomplete old PR component, seven panel cases fail; against the main-only component, two cases fail; all eight panel cases pass on the combined component.The earlier review repairs remain in the actual source and tested tree: the canonical runbook fixture, grounded acceptance criteria with explicit timestamps, replay clip stopping, bounded unique step IDs, initial step deep links, malformed optional ranges that preserve valid actions, and shared saved-pack SOP fallback compilation. Server chat resolves the step against the saved pack and rejects forged fields before the model call. Step changes clear history and interview state. Request-generation guards discard stale success/error/finally handlers even after whole-pack → step → the same whole-pack navigation. Valid step context takes precedence over planning keywords or
planIntent; the whole-pack planner and multiline composer retain their existing behavior.The final PR changes 30 paths: the original 29 Step Runner paths plus cross-feature coverage in the existing
StudioIdeOutput.playflow.test.tsx. All independent main changes are preserved. Root/web manifests equal current main; the lockfile retains only the branch's existing nine Vitest 4.1.12 / tinyrainbow 3.2.0 records relative to main. No additional dependency update was introduced by this integration. Stored-pack compatibility, the existing feature flag, billing/quota paths and structure-schema version are retained.Current validation — November 10, 2026
npm ci --ignore-scripts --legacy-peer-deps --no-audit --no-fund, inspected web postinstall patcher,npm --workspace=apps/web test,npm --workspace=apps/web run type-check,npm --workspace=apps/web run lint, andnpm run build:webpassed. 1,610 tests passed across 173 files, 28 skipped; production build generated 47/47 static pages. The full suite includes the original grounding, playback, export, malformed-input, interview and stale-request regressions plus the four new combined-panel cases. The frozen dependency inputs stayed unchanged.https://v0-uvai-lnmr2f6nw-garv1.vercel.app, including ready-pack lineage without the processing shortcut. These are pipeline/API checks; the local UI tests use a controlled player. A new interactive YouTube/gateway walkthrough and fresh paid generation were not performed on this head, and cached packs may satisfy the preview checks.requirements.txtstill fell back to declared packages after a resolver failure, so Python transitive coverage remains incomplete.Source-validation snapshot before this metadata update: 28 checks completed — 25 passed, 3 skipped, with all 10 existing inline review threads resolved and no new unresolved thread. The PR is open, non-draft and mergeable with auto-merge disabled. No approval, main merge or production deployment is implied by this validation snapshot.
Step Runner behavior retained
The Deliverables pane stops being a static reference and becomes a 1-of-N Step Runner modeled on the Pollen Robotics assembly guide: steps use video timeline anchors wherever saved pack evidence supports them,
Nextseeks the player, a Step 0 prerequisites checklist precedes Step 1, a Full Runbook Markdown mode exportsRUNBOOK.md, and the chat is re-grounded to the active step's transcript window.Intent-vs-execution audit (see
apps/web/src/lib/step-runner-PLAN.md§0): extraction already produced time-anchored evidence (segments, chapters, visuals, keyframes, grounded-spec citations), but Studio presented it as text and nothing in the pane drove the player. This PR closes that gap at the presentation layer without inventing evidence.Scope
lib/runbook-steps.ts— pure compiler: requirements / action_items (or linked SOP) → steps withid,step_number,title,kind,timestamp_range | null,anchorprovenance,content_markdown,verification(+ source), inputs/outputs, snippet, keyframe. Anchors only from: extractorstart_s/end_s, validated grounded-spec citations, transcript segments quoting namedstack.toolsevidence or sharing distinctive vocabulary, chapters, visual events. Step 0 prerequisites fromstack.tools/ stack checks / explicit access & runtime mentions.RUNBOOK.mdrenderer.components/studio/StepRunner.tsx,StudioRunbookPane.tsx— stepper (Prev/Next/quick-jump,#step-nhash, scroll-to-top), Autoplay-step-clip toggle (cue-only seek when off, pause at clip end when on), "Playing: Step k" follow chip, per-step card, local completion notes, Troubleshoot hook, markdown copy/download.StudioIdeOutput— first Runbook tab, default when a runbook exists; Tasks remains the default otherwise, and all seven extraction tabs are retained.StudioIdeChat+api/chat/route.ts+chat-pack-grounding.ts— bounded, zod-validatedstepbody field → identity + active step + transcript/visual evidence inside a 15s-padded window (whole-pack SOP/action lists omitted). Fails closed on malformed step or missing pack binding.use-youtube-player.ts—seekTo(seconds, { autoplay })(default unchanged).start_s/end_son requirements and action_items ("omit when not observed — never guess"); client citation now carries boundedcode_snippets. NoVIDEO_PACK_STRUCTURE_SCHEMA_VERSIONbump (would force a paid re-extract of every stored pack); stored packs derive anchors client-side.Video.runbookProgress(local notes),RUNBOOK.mdin Export.Remaining limits
Anchors come only from saved extractor or transcript evidence. Unanchored steps say “No verified timestamp” and do not seek. Coarse chapter or vocabulary anchors may select a wider segment; users can inspect provenance before relying on the seek target. Step chat validates pack binding and resolves step details from the saved pack on the server. Linked-SOP fallback steps use the same compiler in Studio and server chat. The existing Studio feature flag and quota/billing behavior are preserved. No structure-schema bump or paid re-extraction is introduced.
The full npm audit remains failed with 25 high and 22 moderate findings, matching current main's advisory IDs; no new advisory ID was added by this branch, and no exception or risk waiver is granted. Python transitive coverage and live interactive playback/model behavior retain the limits stated above. Revert through a reviewed PR preserving unrelated current-main changes; stored packs remain compatible.